在 Day 10,我們完成了 Docker 打包,但光有 Image 還不夠,我們需要有一個地方來「調度與運行」它,並且保證服務穩定,這就是 Kubernetes 的角色。
今天要帶大家用 Minikube,在本機快速建立一個 Cluster,並部署第一個 Pod。
Minikube 是 Google 推出的輕量級工具,可以在本機模擬一個單節點的 Kubernetes Cluster。
它最大的好處是:快速、方便,適合學習與實驗,不用真的準備雲端環境。
在開始之前,請確認已經具備以下條件:
▪ 如果有舊的 cluster,可以先刪除:minikube delete
▪ 在啟動 Minikube 前,務必先開 Docker Desktop,否則會啟動不了
▪ 建議使用 --driver=docker,這樣比較穩定
minikube start --driver=docker
👉執行成功後,Minikube 就會幫你建立一個單節點的 Kubernetes Cluster。
eval $(minikube docker-env)
👉切換 Docker CLI context 到 Minikube 內建的 Docker(確保 build 出來的 image 是放進 Minikube 內部,而不是你本機 Docker Desktop)
docker build -t fastapi-app:latest .
👉用 Docker 建立映像檔
apiVersion: apps/v1
kind: Deployment
metadata:
name: fastapi-deploy
spec:
replicas: 1
selector:
matchLabels:
app: fastapi
template:
metadata:
labels:
app: fastapi
spec:
containers:
- name: fastapi-app
image: fastapi-app:latest
imagePullPolicy: Never
ports:
- containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
name: fastapi-service
spec:
type: NodePort # 在 Minikube 環境方便用 URL 存取
selector:
app: fastapi
ports:
- port: 8000 # Service 對外的 port
targetPort: 8000 # Pod containerPort
nodePort: 30081 # 對外固定 NodePort (範圍 30000–32767)
🔸Deployment:負責讓 Pod 跑起來並維持數量
🔸Service:提供固定門牌號碼,讓外界能找到 Pod
minikube kubectl -- apply -f deployment.yml
👉套用 YAML
minikube kubectl -- get pods
👉查看 Pod 狀態
✅若看到 Pod 進入 Running 狀態,就代表成功
minikube kubectl -- get svc
👉確認 Service 已建立
minikube service fastapi-service --url
👉Minikube 幫你「本地開一個通道」,保證一定能連到 Service(終端機要保持開啟,否則通道會關閉)
👉 Pod 成功跑起來只是開始,下一篇我們要談雲端部署策略:藍綠、滾動、金絲雀,看看如何在不中斷服務下完成版本更新 🚀